//package com.conferenceroom.util;
//
//import com.conferenceroom.dto.AjaxResult;
//import org.springframework.dao.DataIntegrityViolationException;
//import org.springframework.http.converter.HttpMessageNotReadableException;
//import org.springframework.validation.ObjectError;
//import org.springframework.web.HttpRequestMethodNotSupportedException;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.MissingServletRequestParameterException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//import javax.validation.ConstraintViolationException;
//import java.util.List;
//import java.util.stream.Collectors;
//
//@RestControllerAdvice
//public class GlobalExceptionHandler {
//
//    // 处理 @Valid 参数校验失败
//    @ExceptionHandler(MethodArgumentNotValidException.class)
//    public AjaxResult handleValidationExceptions(MethodArgumentNotValidException ex) {
//        List<String> errors = ex.getBindingResult()
//                .getAllErrors()
//                .stream()
//                .map(ObjectError::getDefaultMessage)
//                .collect(Collectors.toList());
//        return AjaxResult.fail("参数校验失败: " + errors);
//    }
//
//    // 处理 JSR 380 标准校验失败
//    @ExceptionHandler(ConstraintViolationException.class)
//    public AjaxResult handleConstraintViolationException(ConstraintViolationException ex) {
//        return AjaxResult.fail("约束校验失败: " + ex.getMessage());
//    }
//
//    // 处理数据库完整性冲突
//    @ExceptionHandler(DataIntegrityViolationException.class)
//    public AjaxResult handleDataIntegrityViolationException(DataIntegrityViolationException ex) {
//        return AjaxResult.fail("数据完整性校验失败: " + ex.getMessage());
//    }
//
//    // JSON 解析失败
//    @ExceptionHandler(HttpMessageNotReadableException.class)
//    public AjaxResult handleJsonParseException(HttpMessageNotReadableException ex) {
//        return AjaxResult.fail("JSON 解析失败: " + ex.getMessage());
//    }
//
//    // 缺少请求参数
//    @ExceptionHandler(MissingServletRequestParameterException.class)
//    public AjaxResult handleMissingParams(MissingServletRequestParameterException ex) {
//        return AjaxResult.fail("缺少必要参数: " + ex.getParameterName());
//    }
//
//    // 请求方法不支持
//    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
//    public AjaxResult handleMethodNotSupportedException(HttpRequestMethodNotSupportedException ex) {
//        return AjaxResult.fail("请求方法不支持: " + ex.getMethod());
//    }
//
//    // 非法参数异常
//    @ExceptionHandler(IllegalArgumentException.class)
//    public AjaxResult handleIllegalArgumentException(IllegalArgumentException ex) {
//        return AjaxResult.fail("非法参数: " + ex.getMessage());
//    }
//
//    // 空指针异常
//    @ExceptionHandler(NullPointerException.class)
//    public AjaxResult handleNullPointerException(NullPointerException ex) {
//        return AjaxResult.fail("系统异常: 空指针异常");
//    }
//
//    // 其它异常
//    @ExceptionHandler(Exception.class)
//    public AjaxResult handleException(Exception ex) {
//        return AjaxResult.fail("系统异常: " + ex.getMessage());
//    }
//}
